Checksum Calculation
If the Customer Information Shared Secret field is set under Home > Terminal Settings in the Merchant Information Interface, the checksum can be used to authenticate the origin of a request, to counter "man in the middle" attacks.
The checksum is calculated based on these parameters:
- amount
- currency
- shop_orderid
- secret
Here are code samples that show how the checksum can be calculated using PHP, and C#.
PHP code sample
public function calculateChecksum(Array $inputData, $sharedSecret)
{
$inputData['secret'] = $sharedSecret; unset($inputData['checksum']);
ksort($inputData);
$data = array();
foreach($inputData as $name => $value)
{
$data[] = $name . "=" . $value;
}
return md5(join(',', $data));
}
$checksum = calculateChecksum($_REQUEST['customer_info'], 'secret');
C# code sample
public string calculateChecksum(Dictionary<String, String> inputData, string sharedSecret)
{
inputData.Add("secret" , sharedSecret);
inputData.Remove("checksum" );
List<String> data = new List<String>();
foreach (KeyValuePair<String, String> item in inputData.OrderBy(pair => pair.Key).ToList())
{
data.Add(item.Key + "=" + item.Value);
}
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider ();
byte [] hashbytes = md5.ComputeHash(
Encoding.UTF8.GetBytes(string.Join("," , data).ToArray()));
string hashstring = "";
for (int i = 0; i < hashbytes.Length; i++)
{
hashstring += hashbytes[i].ToString("x2");
}
return hashstring;
}